home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / kcl / akcl / akcl1615.lha / doc / format < prev    next >
Lisp/Scheme  |  1987-12-04  |  1KB  |  44 lines

  1.  
  2. We have added a user extensible feature to the common lisp 
  3. function format.
  4.  
  5. For some applications, for example in maxima, it is very desirable
  6. to be able to define a new control character, so that
  7.  
  8. (format t "~%The polynomial ~m is not zero" polynomial)
  9.  
  10. would work.  It is desirable to extend format itself, since then
  11. calls to the error and other functions which use format will work
  12. correctly. For example:
  13.  
  14. (error "~%The polynomial ~m is not zero" polynomial)
  15.  
  16.  
  17. For an application to do this we would evaluate the following:
  18.  
  19. (setf (get 'si::*indent-formatted-output* (char-code #\m)) 'maxima-print)
  20.  
  21. (defun maxima-print (item stream colon atsign &rest l)
  22.    colon atsign l  ;ignoring these
  23.   (internal-maxima-print item stream))
  24.  
  25. Note this extension is case sensitive, so that to have this apply to
  26. capital M as well, the property for (char-code #\M) must be added as
  27. well.
  28.  
  29. A call with "~:m" would make colon=1 and atsign=0.
  30. A call with "~@m" would make colon=0 and atsign=1.
  31.  
  32. To Do:
  33. The &rest l is currently unused, a future addition will probably
  34. store into l the current column of the format output stream.
  35.  
  36. This also implies that new print functions should return what they think is 
  37. the new column.  Since I believe that 98% of the current calls to format
  38. do not use column information in an important way, this is probably not worth
  39. the additional hair involved.
  40.  
  41. Numeric args are not passed.
  42.  
  43.  
  44.